
const Dept = require('../models/Dept.js');
const Emp = require('../models/Emp.js');

// 维护从 Dept 到 Emp 一对多 的关联关系
Dept.hasMany( Emp , {
    // 指明在 Emp 对应的表中，用于维护关联关系的外键名称
    // 即在 t_emps 表中哪个列参照了 t_depts 表的 主键
    foreignKey: 'dept_id'
});

// 维护从 Emp 到 Dept 的 多对一 关联关系
Emp.belongsTo( Dept , {
    // 指明在 Emp 对应的表中，用来维护关联关系的外键
    // 即在 t_emps 表中哪个列参照了 t_depts 表的 主键
    foreignKey: 'dept_id'
});

// 查询每个部门及其所属员工信息
Dept.findAll({
    // 在查询部门的同时也要查询员工
    include: Emp
}).then( rows => rows.map( row => row.dataValues ) )
  .then( depts => {
        depts.forEach( (dept,index) => {
            // console.log( index , dept );
            let emps = dept.Emps ;
            delete dept.Emps ;
            emps = emps.map( e => e.dataValues );
            // console.log( emps );
            dept.emps = emps ;
        });

        return depts ;
  }).then( depts => {
      depts.forEach( d => {
          console.log( d );
      });
  });